iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
0
Mobile Development

Flutter App 開發實戰系列 第 14

GridView 種類 [DAY 14]

  • 分享至 

  • xImage
  •  

前面文章介紹了 GridView 的使用與屬性,接下來我們來看看在 flutter 內 GridView 提供哪些建構式讓我們能夠更方便的來使用它。


GridView 的建構式主要分成建立固定數量或少量 sub widget 的 GridView.countGridView.extent ,及大量甚至是無限的 GridView.builder

GridView.count

利用crossAxisCount 建立每列固定數量的 sub widget

GridView.count(
       crossAxisCount: 3, //決定每列數量
       childAspectRatio: 1,
       children: <Widget>[
         FlatButton(color: Colors.blueAccent,child: Text("1"),onPressed: (){},),
         FlatButton(color: Colors.blueAccent,child: Text("2"),onPressed: (){},),
         FlatButton(color: Colors.blueAccent,child: Text("3"),onPressed: (){},),
         FlatButton(color: Colors.blueAccent,child: Text("4"),onPressed: (){},),
         FlatButton(color: Colors.blueAccent,child: Text("5"),onPressed: (){},),
         FlatButton(color: Colors.blueAccent,child: Text("6"),onPressed: (){},),
       ],
     );

https://ithelp.ithome.com.tw/upload/images/20200914/20130127EuTtuPh5Cy.png

GridView.extent

利用maxCrossAxisExtent建立固定長度的 sub widget

GridView.extent(
       maxCrossAxisExtent: 100,//長度最大值100
       childAspectRatio: 1,
       children: <Widget>[
         FlatButton(color: Colors.blueAccent,child: Text("1"),onPressed: (){},),
         FlatButton(color: Colors.blueAccent,child: Text("2"),onPressed: (){},),
         FlatButton(color: Colors.blueAccent,child: Text("3"),onPressed: (){},),
         FlatButton(color: Colors.blueAccent,child: Text("4"),onPressed: (){},),
         FlatButton(color: Colors.blueAccent,child: Text("5"),onPressed: (){},),
         FlatButton(color: Colors.blueAccent,child: Text("6"),onPressed: (){},),
       ],
     );

https://ithelp.ithome.com.tw/upload/images/20200914/20130127IIFEUNiLrM.png

GridView.builder

利用itemBuilder來動態建構 sub widget
必須傳入 itemBuilder 、 girdDelegate

List<String> items = [] ;

for(int i  = 0 ;i<=100 ;i++){
    items.add(i.toString());
}

return GridView.builder(
       gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
         crossAxisCount:3,
         childAspectRatio: 1
       ),
       itemCount: items.length,
       itemBuilder: (context , index){
         return FlatButton(
           color: Colors.blueAccent,
           child: Text(items[index]),
           onPressed: (){},);
       },
     ) ;

https://ithelp.ithome.com.tw/upload/images/20200914/20130127rzfxnmJm0k.png


上一篇
GridView 範例 [DAY 13]
下一篇
來做個使用者列表吧[DAY 15]
系列文
Flutter App 開發實戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言